/**
 * TradingView 加载测试工具
 * 验证脚本加载逻辑是否正确
 */

import { getTradingViewSources, loadTradingViewScript, isTradingViewAvailable } from './tradingview-loader.js'

/**
 * 测试脚本源配置
 */
export function testScriptSources() {
  console.log('=== 测试脚本源配置 ===')
  
  try {
    const sources = getTradingViewSources()
    console.log('脚本源列表:', sources)
    
    // 检查是否包含CDN链接
    const hasCDN = sources.some(source => source.includes('tradingview.com'))
    if (hasCDN) {
      console.warn('⚠️ 警告: 脚本源包含CDN链接，可能导致网络超时')
      return false
    }
    
    // 检查是否都是本地资源
    const allLocal = sources.every(source => 
      source.startsWith('./') || 
      source.startsWith('/') || 
      !source.includes('http')
    )
    
    if (allLocal) {
      console.log('✅ 所有脚本源都是本地资源')
      return true
    } else {
      console.warn('⚠️ 包含非本地资源')
      return false
    }
    
  } catch (error) {
    console.error('❌ 测试脚本源配置失败:', error)
    return false
  }
}

/**
 * 测试TradingView可用性
 */
export function testTradingViewAvailability() {
  console.log('=== 测试TradingView可用性 ===')
  
  try {
    const isAvailable = isTradingViewAvailable()
    console.log('TradingView可用性:', isAvailable ? '✅ 可用' : '❌ 不可用')
    
    if (isAvailable) {
      console.log('TradingView对象:', typeof TradingView)
      console.log('TradingView.widget:', typeof TradingView?.widget)
    }
    
    return isAvailable
  } catch (error) {
    console.error('❌ 测试TradingView可用性失败:', error)
    return false
  }
}

/**
 * 模拟脚本加载测试
 */
export function testScriptLoading() {
  console.log('=== 模拟脚本加载测试 ===')
  
  try {
    const sources = getTradingViewSources()
    console.log('将尝试加载的脚本源:')
    sources.forEach((source, index) => {
      console.log(`${index + 1}. ${source}`)
    })
    
    // 检查第一个源是否存在
    const firstSource = sources[0]
    if (firstSource) {
      console.log(`✅ 第一个脚本源: ${firstSource}`)
      return true
    } else {
      console.error('❌ 没有可用的脚本源')
      return false
    }
    
  } catch (error) {
    console.error('❌ 模拟脚本加载测试失败:', error)
    return false
  }
}

/**
 * 运行完整的加载测试
 */
export function runLoadingTests() {
  console.log('🚀 开始TradingView加载测试...')
  
  try {
    // 1. 测试脚本源配置
    const sourcesTest = testScriptSources()
    
    // 2. 测试TradingView可用性
    const availabilityTest = testTradingViewAvailability()
    
    // 3. 模拟脚本加载测试
    const loadingTest = testScriptLoading()
    
    console.log('=== 测试结果 ===')
    console.log('脚本源配置:', sourcesTest ? '✅ 通过' : '❌ 失败')
    console.log('TradingView可用性:', availabilityTest ? '✅ 通过' : '❌ 失败')
    console.log('脚本加载测试:', loadingTest ? '✅ 通过' : '❌ 失败')
    
    const allOk = sourcesTest && loadingTest
    console.log('总体结果:', allOk ? '✅ 所有测试通过' : '❌ 存在问题')
    
    return allOk
  } catch (error) {
    console.error('❌ 测试过程中出现错误:', error)
    return false
  }
}

// 如果在浏览器环境中，将测试函数挂载到window对象
if (typeof window !== 'undefined') {
  window.TradingViewLoadingTest = {
    testScriptSources,
    testTradingViewAvailability,
    testScriptLoading,
    runLoadingTests
  }
}
